/*************************************************************************
	> File Name: oj-50.cpp
	> Author: Wang Bo
	> Mail: 1276106221@qq.com
	> Created Time: 2021年01月09日 星期六 16时37分30秒
 ************************************************************************/
#include <iostream>
using namespace std;
//dp[n][m] n个鸡蛋，m层楼，最坏情况最少测多少次
//假设第一个鸡蛋第k层楼碎了
//问题转换为手里还有n-1个鸡蛋，测k-1层楼
//若第k层楼没碎
//问题转换为n个鸡蛋，从测m-k层楼
//
//dp[n][m] = min(max(dp[n - 1][k - 1] + 1, dp[n][m - k]])) + 1;
//

#define MAX_N 32
#define MAX_M 1000000
int dp[MAX_N + 5][MAX_M + 5];


int main() {
    int n, m;
    cin >> n >> m;
    for (int i = 0; i <= m; ++i) dp[1][i] = i;
    for (int i = 2; i <= n; ++i) {
        for (int j = 1; j <= m; ++j) {
            dp[i][j] = j;
            for (int k = 1; i <= j; ++k) {
                dp[i][j] = min(dp[i][j], 
                           max(dp[i - 1][k - 1], dp[i][j - k]) + 1);
            }
        }
    }
    return 0;
}
